package com.zlx.module_base.base_api.module;

import androidx.lifecycle.LiveData;

import com.zlx.module_base.base_api.res_data.LoginBean;
import com.zlx.module_base.base_api.res_data.LoginCodeBean;
import com.zlx.module_base.base_api.res_data.QueryByBean;
import com.zlx.module_base.base_api.res_data.RegisterBean;
import com.zlx.module_base.base_api.res_data.UpdatePasswordBean;
import com.zlx.module_base.base_api.res_data.UpdatePhoneBody;
import com.zlx.module_base.base_api.res_data.WalletPasswordBody;
import com.zlx.module_network.bean.ApiResponse;

import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Copyright (C)
 * FileName: ArticleApi
 * Author: Zlx
 * Email: 1170762202@qq.com
 * Date: 2020/9/17 10:48
 * Description: 体系api
 */
public interface LoginApi {

    /**
     * 发送短信验证码
     *
     * @param mobile  手机号
     * @param smsType 验证码类型 1,注册 2 绑定手机号
     * @return
     */
    @GET("appapi/login/code")
    LiveData<ApiResponse<LoginCodeBean>> login_code(@Query("mobile") String mobile, @Query("smsType") String smsType);

    /**
     * 注册
     *
     * @param mobile     手机号
     * @param code       验证码
     * @param loginPwd   登录密码
     * @param confirmPwd 确认密码
     * @param inviteCode 邀请码
     * @return
     */
    @FormUrlEncoded
    @POST("appapi/login/register")
    LiveData<ApiResponse<RegisterBean>> login_register(
            @Field("mobile") String mobile,
            @Field("code") String code,
            @Field("loginPwd") String loginPwd,
            @Field("confirmPwd") String confirmPwd,
            @Field("inviteCode") String inviteCode
    );

    /**
     * 登录
     *
     * @param mobile   手机号
     * @param password 密码
     * @return
     */
    @FormUrlEncoded
    @POST("appapi/login/userLogin")
    LiveData<ApiResponse<LoginBean>> user_login(
            @Field("mobile") String mobile,
            @Field("password") String password
    );

    /**
     * 修改密码
     *
     * @param mobile     手机号
     * @param code       验证码
     * @param loginPwd   密码
     * @param confirmPwd 确认密码
     * @return
     */
    @FormUrlEncoded
    @POST("appapi/login/updatePassword")
    LiveData<ApiResponse<UpdatePasswordBean>> updatePassword(
            @Field("mobile") String mobile,
            @Field("code") String code,
            @Field("loginPwd") String loginPwd,
            @Field("confirmPwd") String confirmPwd
    );

    /**
     * 设置支付
     * <p>
     * 设置支付密码
     *
     * @return
     */
    @POST("appapi/login/setWalletPassword")
    LiveData<ApiResponse<UpdatePasswordBean>> setWalletPassword(
            @Header("token") String token,
            @Body WalletPasswordBody walletPasswordBody
    );

    /**
     * 根据用户id查询个人信息
     */
    @GET("appapi/login/queryById")
    LiveData<ApiResponse<QueryByBean>> queryById(
            @Header("token") String token,
            @Query("id") String id
    );

    /**
     * 修改手机号
     */
    @POST("appapi/login/updatePhone")
    LiveData<ApiResponse<QueryByBean>> updatePhone(
            @Header("token") String token,
            @Body UpdatePhoneBody updatePhoneBody
    );


}
